bitkeeper revision 1.1389.1.20 (4275e5cf8rSBidyFfn32zpPSsOA_xw)
authorkmacy@netapp.com[kaf24] <kmacy@netapp.com[kaf24]>
Mon, 2 May 2005 08:33:19 +0000 (08:33 +0000)
committerkmacy@netapp.com[kaf24] <kmacy@netapp.com[kaf24]>
Mon, 2 May 2005 08:33:19 +0000 (08:33 +0000)
[PATCH] [PATCH] make XenFreeBSD trapframe the same as native

# This is a BitKeeper generated diff -Nru style patch.
#
# ChangeSet
#   2005/05/01 16:04:24-07:00 kmacy@curly.lab.netapp.com
#   Make trapframe the same size as on native i386
#   Signed-off-by: Kip Macy <kmacy@fsmware.com>
#
# freebsd-5.3-xen-sparse/i386-xen/include/pcpu.h
#   2005/05/01 16:04:20-07:00 kmacy@curly.lab.netapp.com +3 -2
#   add per-cpu fields for evtchn and page faults
#
# freebsd-5.3-xen-sparse/i386-xen/i386-xen/trap.c
#   2005/05/01 16:04:20-07:00 kmacy@curly.lab.netapp.com +1 -9
#   remove STACK_DEBUGGING cruft
#   fetch cr2 from pcpu area
#
# freebsd-5.3-xen-sparse/i386-xen/i386-xen/genassym.c
#   2005/05/01 16:04:20-07:00 kmacy@curly.lab.netapp.com +1 -2
#   remove unused trap_nesting
#   add cr2 field
#
# freebsd-5.3-xen-sparse/i386-xen/i386-xen/exception.s
#   2005/05/01 16:04:20-07:00 kmacy@curly.lab.netapp.com +41 -31
#   Save CR2 after trap frame then move to pcpu area
#
# BitKeeper/deleted/.del-ucontext.h~6f534fc91cb2d96b
#   2005/05/01 15:56:03-07:00 kmacy@curly.lab.netapp.com +0 -1
#   Delete: freebsd-5.3-xen-sparse/i386-xen/include/ucontext.h
#
# BitKeeper/deleted/.del-frame.h~fbfe41b49597c684
#   2005/05/01 15:55:59-07:00 kmacy@curly.lab.netapp.com +3 -3
#   Delete: freebsd-5.3-xen-sparse/i386-xen/include/frame.h
#

.rootkeys
BitKeeper/etc/logging_ok
freebsd-5.3-xen-sparse/i386-xen/i386-xen/exception.s
freebsd-5.3-xen-sparse/i386-xen/i386-xen/genassym.c
freebsd-5.3-xen-sparse/i386-xen/i386-xen/trap.c
freebsd-5.3-xen-sparse/i386-xen/include/frame.h [deleted file]
freebsd-5.3-xen-sparse/i386-xen/include/pcpu.h
freebsd-5.3-xen-sparse/i386-xen/include/ucontext.h [deleted file]

index ed9314cf7f258ee07797e03a57bfe49f4d87f71b..60c742cd39d6835a84f222257c46e79771d905b7 100644 (file)
--- a/.rootkeys
+++ b/.rootkeys
@@ -95,7 +95,6 @@
 423e7e8aVYTynjpZsJxUsFSlIDhpJw freebsd-5.3-xen-sparse/i386-xen/include/cpufunc.h
 423e7e8avrrUxDugrwq_GJp499DkJw freebsd-5.3-xen-sparse/i386-xen/include/ctrl_if.h
 423e7e8apY1r9Td-S0eZITNZZbfNTQ freebsd-5.3-xen-sparse/i386-xen/include/evtchn.h
-423e7e8aL9DsObEegCwtILrF6SWcAQ freebsd-5.3-xen-sparse/i386-xen/include/frame.h
 4266317eOVvN00XdcqRfDRFIrbqgvg freebsd-5.3-xen-sparse/i386-xen/include/gnttab.h
 423e7e8btv8Gojq50ggnP5A1Dkc4kA freebsd-5.3-xen-sparse/i386-xen/include/hypervisor-ifs.h
 423e7e8buhTLVFLZ33-5s8-UdADSZg freebsd-5.3-xen-sparse/i386-xen/include/hypervisor.h
 423e7e8bVOoPguCLyNj7pil-PT7Vcw freebsd-5.3-xen-sparse/i386-xen/include/segments.h
 423e7e8c9AuwksRrt0ptRKHnNVWuNQ freebsd-5.3-xen-sparse/i386-xen/include/synch_bitops.h
 423e7e8csdWimnMBI2HxEDJ30L42kQ freebsd-5.3-xen-sparse/i386-xen/include/trap.h
-423e7e8cgVgn9W8sZWwfh_4938fSJQ freebsd-5.3-xen-sparse/i386-xen/include/ucontext.h
 423e7e8cdsEhPyad2ppDoSiBR4eB9g freebsd-5.3-xen-sparse/i386-xen/include/vmparam.h
 423e7e8ccGI7kzIlRcEVziGZzm46wg freebsd-5.3-xen-sparse/i386-xen/include/xen-os.h
 423e7e8cVSqLIOp5vH4ADvAL_MF6Qg freebsd-5.3-xen-sparse/i386-xen/include/xen_intr.h
index d0fc567e14f7c505cc6dfb281dd411f63695087b..6ddee7bec829e9122cf185658bf390f660365abd 100644 (file)
@@ -55,6 +55,7 @@ kaf24@scramble.cl.cam.ac.uk
 kaf24@striker.cl.cam.ac.uk
 kaf24@viper.(none)
 katzj@redhat.com
+kmacy@netapp.com
 kmacy@shemp.lab.netapp.com
 kraxel@bytesex.org
 laudney@eclipse.(none)
index 4adb61a3509d88a2a9e657d1aec8f6a13377003f..670d2809fa3f666d3d5964108fde3b337dcf97ef 100644 (file)
@@ -91,47 +91,52 @@ MCOUNT_LABEL(user)
 MCOUNT_LABEL(btrap)
 
 IDTVEC(div)
-       pushl $0; pushl $0; TRAP(T_DIVIDE)
+       pushl $0; TRAP(T_DIVIDE)
 IDTVEC(dbg)
-       pushl $0; pushl $0; TRAP(T_TRCTRAP)
+       pushl $0; TRAP(T_TRCTRAP)
 IDTVEC(nmi)
-       pushl $0; pushl $0; TRAP(T_NMI)
+       pushl $0; TRAP(T_NMI)
 IDTVEC(bpt)
-       pushl $0; pushl $0; TRAP(T_BPTFLT)
+       pushl $0; TRAP(T_BPTFLT)
 IDTVEC(ofl)
-       pushl $0; pushl $0; TRAP(T_OFLOW)
+       pushl $0; TRAP(T_OFLOW)
 IDTVEC(bnd)
-       pushl $0; pushl $0; TRAP(T_BOUND)
+       pushl $0; TRAP(T_BOUND)
 IDTVEC(ill)
-       pushl $0; pushl $0; TRAP(T_PRIVINFLT)
+       pushl $0; TRAP(T_PRIVINFLT)
 IDTVEC(dna)
-       pushl $0; pushl $0; TRAP(T_DNA)
+       pushl $0; TRAP(T_DNA)
 IDTVEC(fpusegm)
-       pushl $0; pushl $0; TRAP(T_FPOPFLT)
+       pushl $0; TRAP(T_FPOPFLT)
 IDTVEC(tss)
-       pushl $0; TRAP(T_TSSFLT)
+       TRAP(T_TSSFLT)
 IDTVEC(missing)
-       pushl $0; TRAP(T_SEGNPFLT)
+       TRAP(T_SEGNPFLT)
 IDTVEC(stk)
-       pushl $0; TRAP(T_STKFLT)
+       TRAP(T_STKFLT)
 IDTVEC(prot)
-       pushl $0; TRAP(T_PROTFLT)
+       TRAP(T_PROTFLT)
 IDTVEC(page)
+       pushl %eax 
+       movl  4(%esp),%eax
+       movl  %eax,-44(%esp)    # move cr2 after trap frame
+       popl %eax
+       addl $4,%esp
        TRAP(T_PAGEFLT)
 IDTVEC(mchk)
-       pushl $0; pushl $0; TRAP(T_MCHK)
+       pushl $0; TRAP(T_MCHK)
 IDTVEC(rsvd)
-       pushl $0; pushl $0; TRAP(T_RESERVED)
+       pushl $0; TRAP(T_RESERVED)
 IDTVEC(fpu)
-       pushl $0; pushl $0; TRAP(T_ARITHTRAP)
+       pushl $0; TRAP(T_ARITHTRAP)
 IDTVEC(align)
-       pushl $0; TRAP(T_ALIGNFLT)
+       TRAP(T_ALIGNFLT)
 
 IDTVEC(xmm)
-       pushl $0; pushl $0; TRAP(T_XMMFLT)
+       pushl $0; TRAP(T_XMMFLT)
 
 IDTVEC(hypervisor_callback)
-        pushl $T_HYPCALLBACK;  pushl %eax; TRAP(T_HYPCALLBACK)
+       pushl %eax; TRAP(T_HYPCALLBACK)
 
 hypervisor_callback_pending:
        movl    $T_HYPCALLBACK,TF_TRAPNO(%esp)
@@ -161,6 +166,12 @@ alltraps_with_regs_pushed:
        movl    $KPSEL,%eax
        movl    %eax,%fs
        FAKE_MCOUNT(TF_EIP(%esp))
+save_cr2:
+       movl    TF_TRAPNO(%esp),%eax
+       cmpl    $T_PAGEFLT,%eax
+       jne     calltrap
+       movl    -4(%esp),%eax
+       movl    %eax,PCPU(CR2)
 calltrap:
        movl    TF_EIP(%esp),%eax
        cmpl    $scrit,%eax
@@ -217,8 +228,7 @@ IDTVEC(lcall_syscall)
        SUPERALIGN_TEXT
 IDTVEC(int0x80_syscall)
        pushl   $2                      /* sizeof "int 0x80" */
-       pushl   $0xCAFE
-       pushl   $0xDEAD
+       pushl   $0xBEEF
        pushal
        pushl   %ds
        pushl   %es
@@ -324,7 +334,7 @@ doreti_popl_es:
 doreti_popl_ds:
        popl    %ds
        POPA
-       addl    $12,%esp
+       addl    $8,%esp
        .globl  doreti_iret
 doreti_iret:
        iret
@@ -341,7 +351,7 @@ ecrit:
        ALIGN_TEXT
        .globl  doreti_iret_fault
 doreti_iret_fault:
-       subl    $12,%esp
+       subl    $8,%esp
        pushal
        pushl   %ds
        .globl  doreti_popl_ds_fault
@@ -376,7 +386,7 @@ critical_region_fixup:
         movl  %esp,%esi
         add  %eax,%esi        # %esi points at end of src region
         movl  %esp,%edi
-        add  $0x44,%edi       # %edi points at end of dst region
+        add  $0x40,%edi       # %edi points at end of dst region
         movl  %eax,%ecx
         shr  $2,%ecx          # convert bytes to words
         je   16f              # skip loop if nothing to copy
@@ -403,8 +413,8 @@ critical_fixup_table:
 .byte   0x20                           #pop    %edx
 .byte   0x24                           #pop    %ecx
 .byte   0x28                           #pop    %eax
-.byte   0x2c,0x2c,0x2c                  #add    $0xc,%esp
-.byte   0x38                           #iret   
+.byte   0x2c,0x2c,0x2c                  #add    $0x8,%esp
+.byte   0x34                           #iret   
 
        
 /* # Hypervisor uses this for application faults while it executes.*/
@@ -412,17 +422,17 @@ ENTRY(failsafe_callback)
        pushal
        call xen_failsafe_handler
 /*#    call install_safe_pf_handler */
-        movl 32(%esp),%ebx
+        movl 28(%esp),%ebx
 1:      movl %ebx,%ds
-        movl 36(%esp),%ebx
+        movl 32(%esp),%ebx
 2:      movl %ebx,%es
-        movl 40(%esp),%ebx
+        movl 36(%esp),%ebx
 3:      movl %ebx,%fs
-        movl 44(%esp),%ebx
+        movl 40(%esp),%ebx
 4:      movl %ebx,%gs
 /*#        call install_normal_pf_handler */
        popal
-       addl $16,%esp
+       addl $12,%esp
        iret
 
 
index 1e9df732c79ebedb8b9b88a5691a26d73033b5dc..8b320fb2005240d3e4162078c9c481a32c93af3c 100644 (file)
@@ -200,8 +200,7 @@ ASSYM(PC_TSS_GDT, offsetof(struct pcpu, pc_tss_gdt));
 ASSYM(PC_CURRENTLDT, offsetof(struct pcpu, pc_currentldt));
 ASSYM(PC_CPUID, offsetof(struct pcpu, pc_cpuid));
 ASSYM(PC_CURPMAP, offsetof(struct pcpu, pc_curpmap));
-ASSYM(PC_TRAP_NESTING, offsetof(struct pcpu, pc_trap_nesting));
-
+ASSYM(PC_CR2, offsetof(struct pcpu, pc_cr2));
 ASSYM(PC_CR3, offsetof(struct pcpu, pc_pdir));
 
 #ifdef DEV_APIC
index a74986ed18545b56c29d0785b6b9feecf37ce44f..662f94c456a2494590b643043ae1211b7e0c3d7f 100644 (file)
@@ -181,11 +181,6 @@ trap(struct trapframe frame)
        u_int sticks = 0;
        int i = 0, ucode = 0, type, code;
        vm_offset_t eva;
-#ifdef STACK_DEBUGGING
-       int nesting, current_sp;
-       static int prev_csp = 0, prev_ssp = 0;
-       nesting = PCPU_GET(trap_nesting);
-#endif
 
 #ifdef POWERFAIL_NMI
        static int lastalert = 0;
@@ -227,7 +222,7 @@ trap(struct trapframe frame)
                 * kernel can print out a useful trap message and even get
                 * to the debugger.
                 */
-               eva = frame.tf_cr2;
+               eva = PCPU_GET(cr2);
 
                if (td->td_critnest != 0)                       
                    trap_fatal(&frame, eva);
@@ -613,9 +608,6 @@ user:
        mtx_assert(&Giant, MA_NOTOWNED);
 userout:
 out:
-#ifdef STACK_DEBUGGING 
-       PCPU_SET(trap_nesting, nesting);
-#endif
        return;
 }
 
diff --git a/freebsd-5.3-xen-sparse/i386-xen/include/frame.h b/freebsd-5.3-xen-sparse/i386-xen/include/frame.h
deleted file mode 100644 (file)
index a6572d8..0000000
+++ /dev/null
@@ -1,129 +0,0 @@
-/*-
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * William Jolitz.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *     from: @(#)frame.h       5.2 (Berkeley) 1/18/91
- * $FreeBSD: src/sys/i386/include/frame.h,v 1.23 2003/07/22 08:11:15 peter Exp $
- */
-
-#ifndef _MACHINE_FRAME_H_
-#define _MACHINE_FRAME_H_ 1
-
-/*
- * System stack frames.
- */
-
-/*
- * Exception/Trap Stack Frame
- */
-
-struct trapframe {
-       int     tf_fs;
-       int     tf_es;
-       int     tf_ds;
-       int     tf_edi;
-       int     tf_esi;
-       int     tf_ebp;
-       int     tf_isp;
-       int     tf_ebx;
-       int     tf_edx;
-       int     tf_ecx;
-       int     tf_eax;
-       int     tf_trapno;
-        int     tf_cr2; 
-       /* below portion defined in 386 hardware */
-       int     tf_err;
-       int     tf_eip;
-       int     tf_cs;
-       int     tf_eflags;
-       /* below only when crossing rings (e.g. user to kernel) */
-       int     tf_esp;
-       int     tf_ss;
-};
-
-/* Interrupt stack frame */
-
-struct intrframe {
-       int     if_fs;
-       int     if_es;
-       int     if_ds;
-       int     if_edi;
-       int     if_esi;
-       int     if_ebp;
-       int     :32;
-       int     if_ebx;
-       int     if_edx;
-       int     if_ecx;
-       int     if_eax;
-       int     :32;            /* for compat with trap frame - trapno */
-        int     if_vec;         /* cr2 in trap frame */
-       int     :32;            /* for compat with trap frame - err */
-       /* below portion defined in 386 hardware */
-       int     if_eip;
-       int     if_cs;
-       int     if_eflags;
-       /* below only when crossing rings (e.g. user to kernel) */
-       int     if_esp;
-       int     if_ss;
-};
-
-/* frame of clock (same as interrupt frame) */
-
-struct clockframe {
-       int     cf_fs;
-       int     cf_es;
-       int     cf_ds;
-       int     cf_edi;
-       int     cf_esi;
-       int     cf_ebp;
-       int     :32;
-       int     cf_ebx;
-       int     cf_edx;
-       int     cf_ecx;
-       int     cf_eax;
-       int     :32;            /* for compat with trap frame - trapno */
-        int     cf_vec;         /* cr2 in trap frame */ 
-       int     :32;            /* for compat with trap frame - err */
-       /* below portion defined in 386 hardware */
-       int     cf_eip;
-       int     cf_cs;
-       int     cf_eflags;
-       /* below only when crossing rings (e.g. user to kernel) */
-       int     cf_esp;
-       int     cf_ss;
-};
-
-#define        INTR_TO_TRAPFRAME(frame) ((struct trapframe *)&(frame)->if_fs)
-
-#endif /* _MACHINE_FRAME_H_ */
index 80a675cd4a1f15e47c117e2b5cb873371a988823..e373697cca0f3a002d95a71ba8e5157f1ffd47a2 100644 (file)
@@ -50,8 +50,9 @@
        int     pc_currentldt;                                          \
        u_int   pc_acpi_id;                                             \
        u_int   pc_apic_id;                                             \
-        u_int   pc_faultaddr;                                           \
-        u_int   pc_trap_nesting;                                        \
+        int     *pc_ipi_to_evtchn;                                      \
+        int     *pc_virq_to_irq;                                        \
+        u_int   pc_cr2;                                                 \
         u_int   pc_pdir                                        
 
 #if defined(lint)
diff --git a/freebsd-5.3-xen-sparse/i386-xen/include/ucontext.h b/freebsd-5.3-xen-sparse/i386-xen/include/ucontext.h
deleted file mode 100644 (file)
index eda584b..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-/*-
- * Copyright (c) 1999 Marcel Moolenaar
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer 
- *    in this position and unchanged.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- *    derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * $FreeBSD: src/sys/i386/include/ucontext.h,v 1.10 2002/12/02 19:58:55 deischen Exp $
- */
-
-#ifndef _MACHINE_UCONTEXT_H_
-#define        _MACHINE_UCONTEXT_H_
-
-typedef struct __mcontext {
-       /*
-        * The first 20 fields must match the definition of
-        * sigcontext. So that we can support sigcontext
-        * and ucontext_t at the same time.
-        */
-       int     mc_onstack;             /* XXX - sigcontext compat. */
-       int     mc_gs;                  /* machine state (struct trapframe) */
-       int     mc_fs;
-       int     mc_es;
-       int     mc_ds;
-       int     mc_edi;
-       int     mc_esi;
-       int     mc_ebp;
-       int     mc_isp;
-       int     mc_ebx;
-       int     mc_edx;
-       int     mc_ecx;
-       int     mc_eax;
-       int     mc_trapno;
-        int     mc_cr2;
-       int     mc_err;
-       int     mc_eip;
-       int     mc_cs;
-       int     mc_eflags;
-       int     mc_esp;
-       int     mc_ss;
-
-       int     mc_len;                 /* sizeof(mcontext_t) */
-#define        _MC_FPFMT_NODEV         0x10000 /* device not present or configured */
-#define        _MC_FPFMT_387           0x10001
-#define        _MC_FPFMT_XMM           0x10002
-       int     mc_fpformat;
-#define        _MC_FPOWNED_NONE        0x20000 /* FP state not used */
-#define        _MC_FPOWNED_FPU         0x20001 /* FP state came from FPU */
-#define        _MC_FPOWNED_PCB         0x20002 /* FP state came from PCB */
-       int     mc_ownedfp;
-       /*
-        * See <machine/npx.h> for the internals of mc_fpstate[].
-        */
-       int     mc_fpstate[128] __aligned(16);
-       int     mc_spare2[8];
-} mcontext_t;
-
-#if defined(_KERNEL) && defined(COMPAT_FREEBSD4)
-struct mcontext4 {
-       int     mc_onstack;             /* XXX - sigcontext compat. */
-       int     mc_gs;                  /* machine state (struct trapframe) */
-       int     mc_fs;
-       int     mc_es;
-       int     mc_ds;
-       int     mc_edi;
-       int     mc_esi;
-       int     mc_ebp;
-       int     mc_isp;
-       int     mc_ebx;
-       int     mc_edx;
-       int     mc_ecx;
-       int     mc_eax;
-       int     mc_trapno;
-       int     mc_err;
-       int     mc_eip;
-       int     mc_cs;
-       int     mc_eflags;
-       int     mc_esp;                 /* machine state */
-       int     mc_ss;
-       int     mc_fpregs[28];          /* env87 + fpacc87 + u_long */
-       int     __spare__[17];
-};
-#endif
-
-#endif /* !_MACHINE_UCONTEXT_H_ */